═══ 1. Summary of New Features ═══ I received a great deal of quality feedback from dozens of people that tried previous releases of PMMPEG. Here is a summary of new features that have been implemented based on your suggestions. Please continue to send suggestions and bug reports, it will help to make PMMPEG better for everyone. Click on the links below to get more information on each feature. New Features in PMMPEG 3.0:  Added DIVE support. This is the high-speed graphics and color conversion interface built into every video driver that ships with OS/2 Warp 3.0 running with at least 256 colors.  Designed smaller icons in the toolbar to save screen space.  Redesigned the menus and added new options, as outlined below.  Added Registration feature. Don't worry! It gently reminds you to register each time the application starts up. There is no reduced functionality and none of your files is changed in any way.  Added Save current movie feature.  Added Half, Normal and Double size options.  Added Unlimited, Fast, Medium and Slow playback speed options.  Added an option to turn the menu/toolbar on and off. When off, you can still access the menu and toolbar with a click of Mouse Button 2.  Added an option to maintain the aspect ratio during a resize of the playback frame.  Updated the status bar to show the movie size, frame rate and an indication of the movie type: I frame or IBP frame.  Redesigned the sizing scheme. Removed the Small/Large button in the toolbar as you can resize the movie by resizing the frame to any size you like. You can even Maximize it! The Half, Normal and Double menu options help to get exact sizes with a click. You can use the maintain the aspect ratio menu item to keep the movie properly proporationed as you resize it.  Moved all saved information out of the OS/2 INI file and into PMMPEG.INI, which lives in the same directory as the PMMPEG.EXE file.  Removed the Beep at the end of the movie.  Updated possible command line options.  Updated configuration data values saved between runs.  Updated popup panel when non-understood file is loaded.  Updated the popup message when no help file found more understandable.  Mentioned how to make Ultimotion movies with the VideoIn application from the OS/2 Warp 3.0 Bonus Pak.  Bug fix: Client was sized just a little too small, this has been fixed by virtue of the new sizing method.  Bug fix: No one discovered a latent bug where the Open File dialog would fail if a movie name was passed on the command line with a relative path. New Features in PMMPEG 2.1:  Optimized playback speed with I/B/P movies. They play at much higher frame rates and as a side effect the bug with stepping frame by frame in I/B/P movies has been corrected.  Added Slideshow feature. This allows you to select multiple files with the File Dialog, drag/drop multiple files from somewhere on the desktop or specify multiple files on the command line. PMMPEG will then play each movie, one after the other, and optionally loop back to the front of the list and play again if the Loop mode is set.  Added Toolbar buttons that allow you to save the current frame to the Clipboard or to an OS/2 Bitmap file  The Statistics dialog has been replaced by a Status bar that can be optionally displayed at the bottom of the frame. This shows the relevant statistics for the movie: resolution, frame count (for I/B/P and displayed frames) and frame rate in frames/second.  If a decoding problem occurs on a particular frame, the status bar will optionally be displayed with a red background for that frame.  A pop up message will be displayed if the current display configuration is not set up for at least 256 colors This is required for proper display of the images.  Added WS_ANIMATE bit to respect system window animation option.  Update MPEG movie site information.  Added MPEG-2 decoder discussion to help file.  Added DIVE discussion/problems to help file.  Tested increasing color dithering space up from 128 colors but there was not much visual difference and performance suffered.  Optimization: Check and don't change a button if it's already in the required state.  Optimization: Quickly skip initial frames until a non-all-black frame is found. This will always display the first valid frame of any movie.  Optimization: Better frame/second calculation, still mildly optimistic.  Bug fix: Leaves movie positioned at last frame when it ends.  Bug fix: Only one error message on improper end sequence, stops gracefully.  Bug fix: Gets focus on startup as it should.  Bug fix: Fixed memory leaks and optimized internal table use.  Internal: Cleaned up compiler warnings in source, removed dead code.  Internal: Removed frame size calculation hack. New Features in PMMPEG 2.0:  Toolbar with tape controls (Play/Stop/Rewind/Step/Size/Color/Loop)  Accept MPEG filename on command line and automatically play it.  Command line options for playback size, color and looping.  Configuration data saved between runs.  INSTALL.CMD will create a PMMPEG desktop object  INSTALL.CMD will associate PMMPEG with all *.MPG files  Drag/Drop MPEG movie onto PMMPEG.  Double size playback is possible both in Color and Grayscale.  Loading a movie decodes and displays the first valid frame.  When the window is obscured and then revealed, the movie frame is repainted.  New MPEG movie sites added and corrections made to list.  File Dialog always brings up *.MPG.  MPEG filename is now displayed in the Title bar.  Bug fix: no more silent death problem. PMMPEG jumps to the next frame when bad encoding detected.  Bug fix: The file handle is closed when a movie fails parsing as non-MPEG format  Bug fix: Popups are now displayed on fatal read/MPEG stream/parsing errors. ═══ 2. Suggestions for Future Releases ═══ Here is the list of features I was not able to add in time for this release. If you have any more features you'd like to see, please send them to me. I can't promise to eventually implement them all, due to constraints like time, Berkeley decoding engine limitations, etc., but I'll do my best. The list is in a rough order of what I think I'll concentrate on.  Provide an OS/2 for PowerPC executable shortly after the projected April 1995 OS/2 for PowerPC Beta is released. I have build the code with the limited December 1994 OS/2 for PowerPC beta, but decided against it because of the limited distribution, stability and performance. I expect great things from the upcoming Beta.  Provide an MPEG part for OpenDoc. I had it working at one point and it only took about 2 days to convert the conventional PM program. OpenDoc has matured greatly since then but I wanted to get this release out quickly as people have been waiting long enough. I'll ship the OpenDoc part as soon as I get updated toolkits, samples, etc. and have the time to do the port.  Support a play list - a file containing a list of MPEG files to be played.  Save all frames of movie as bitmaps with unique names with a single click.  Move bottom of window when status bar is toggled, instead of top.  Ensure window stays completely on desktop when toggling status or size buttons.  Save bitmaps as RLE, optional as some apps don't like RLE encoding.  Allow priority adjustment.  Display any interesting info from the MPEG header.  REXX hooks for external control of behavior.  Further Optimize decoding/dithering to improve frame rate.  Overlap display/decode of frames to speed throughput.  Frame back (I frame only).  Play at encoded speed, some movies go too fast.  Scroll bar back and forth across frames.  Pre-parse file and then play back frames.  Bar graph timeline.  Audio sync.  Make into MMPM/2 codec. ═══ 3. Non-Understood Files ═══ When you select a file with the Open... menu item or Drag and Drop a file or group of files onto the movie window, PMMPEG may pop up a message that it doesn't understand the file. There are a few reasons for this:  It may really be a non-MPEG file.  It could be an MPEG-1 file with interleaved sound. These files seem to have a defacto extension of .mp2 and are found at music sites around the Internet. PMMPEG does not support any MPEG files with interleaved sound at this time.  It could be an MPEG-2. PMMPEG does not support MPEG-2 at this time. ═══ 4. VideoIn ═══ The OS/2 Warp 3.0 Bonus Pak includes an application called VideoIn that won the Best Product award at COMDEX. Among other things, it can build an Ultimotion file from a series of bitmaps. Ultimotion is the native video file format for OS/2. If you step through your movie and save each frame into a bitmap file, you'll be able to make an Ultimotion file from it. VideoIn will even let you add sound to the file and playback will stay in sync with the audio. ═══ 5. Toolbar ═══ Use the buttons on the toolbar to control the playback of the movie and select playback options. The buttons on the toolbar have the following functions:  The Play Button causes the movie to start playing.  The Stop Button causes the movie to stop playing.  The Rewind Button causes the movie to be rewound to the first frame, ready for a subsequent Play or Step.  The Step Button button causes the next frame of the movie to be displayed.  The Clipboard Button causes the image of the currently displayed frame to be copied to the OS/2 clipboard.  The File Button causes the image of the currently displayed frame to be saved to an OS/2 bitmap file on disk.  The Color/Gray Button can be either in Color or Grayscale mode. - When in the Color state, the movie is played at the color setting of your desktop; generally 256, 64K or 16.7M colors. - When in the Gray state, the movie is played in shades of gray, the number of shades depend on the color setting of your desktop. Grayscale plays movies a little faster than Color because there's less work to do.  The NoLoop/Loop Button button can be either in NoLoop or Loop mode. - When in the NoLoop state, the movie is played once and then halts at the end. - When in the Loop state, the movie is played over and over until you click on the Stop button or drag and drop a new movie onto the window. ═══ 5.1. Play Button ═══ The Play button causes the movie to start playing. When the movie starts playing, the Stop button will be enabled and the Rewind and Step buttons will be disabled.  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this enabled state:  If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 5.2. Stop Button ═══ The Stop button causes the movie to stop playing. When the movie stops playing, the Play, Rewind and Step buttons will be enabled.  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this grayed out state:  If there is a movie loaded and it is currently playing, the button will be in this enabled state: ═══ 5.3. Rewind Button ═══ The Rewind button causes the movie to be rewound to the first frame, ready for a subsequent Play or Step.  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this enabled state:  If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 5.4. Step Button ═══ The Step button causes the next frame of the movie to be displayed. If the end of the movie is encountered, it will be rewound to the first frame and stepping can continue without reloading the movie. There is a known problem when using Step with IBP-Frame Movies  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this enabled state:  If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 5.5. Clipboard Button ═══ This button allows you to save the curently displayed frame into the clipboard. This allows other OS/2 (and smart Windows) applications to copy the bitmap out of the clipboard for later use. Such apps might allow you to touch up the image or add text to it, then save to any one of many image file formats.  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this enabled state:  If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 5.6. File Button ═══ This button allows you to save the curently displayed frame as a 256 color non-RLE OS/2 bitmap file. It will attempt to generate a unique filename based on the movie filename and the current frame number. If you're saving the file to a FAT formatted partition, the initial filename may have too many characters. Simply shorten the first part of the bitmap filename so it fits the 8.3 naming convention. Subsequent attempts to save the bitmap to a file will use the altered name, replacing the frame number with the new frame number.  If there is no movie loaded, the button will be in this grayed out state:  If there is a movie loaded and it's not currently playing, the button will be in this enabled state:  If there is a movie loaded and it is currently playing, the button will be in this grayed out state: ═══ 5.7. Color/Gray Button ═══ The Color/Gray button toggles back and forth between color playback and shades-of-gray playback. This button defaults to Color, but can be changed by options on the command line or the configuration data in force when this program was last shut down. You will usually see slightly better frame rates with Gray than with Color due to the simpler dithering calculations. Also, some movies have "garish" color and selecting gray scale will make them more pleasing to the eye. There is a problem with the Color Table when switching from color->gray or gray->color during playback. Note: You can toggle this while the movie is running and the display will change to the desired color scheme.  When in the Color state , the movie is played in color. If in DIVE mode, it uses the full number of colors running on your desktop. If in non-DIVE mode, it uses 128 colors.  When in the Grayscale state , the movie is played in shades of gray. ═══ 5.8. NoLoop/Loop Button ═══ The NoLoop/Loop button toggles back and forth between playing the movie and looping around to the start and playing again or playing the movie and stopping at the end. This button defaults to NoLoop, but can be changed by options on the command line or the configuration data in force when this program was last shut down. Note: You can toggle this while the movie is running and the movie will behave accordingly when it hits the last frame.  When in the NoLoop state , the movie stops when it hits the last frame.  When in the Loop state , the movie loops around to the start and continues playing when it hits the last frame. ═══ 6. Configuration Data ═══ PMMPEG stores information about itself when you quit so it can try to give you the same environment the next time you run it.  Window position on the desktop is saved and restored, even if maximized or minimized.  Window size is saved and restored.  Color / Gray state is saved and restored.  Loop / No Loop state is saved and restored.  DIVE / No DIVE state is saved and restored.  Status Bar / No Status Bar state is saved and restored.  Bad Encoding Message / No Bad Encoding Message state is saved and restored.  Menu/Toolbar / No Menu/Toolar state is saved and restored.  Maintain Aspect Ratio / No Maintain Aspect Ratio state is saved and restored.  Half size / Normal Size / Double size state is saved and restored.  Slow / Medium / Fast / Unlimited playback speed state is saved and restored.  The last directory path a movie is loaded from is saved and restored.  The last directory path a movie frame is saved to is saved and restored. If you simply launch PMMPEG without any command line options, these values will be loaded and used to set up the player just like it was when you quit it last. You can use command line options which will override these saved values. ═══ 7. Command Line Options ═══ PMMPEG has been enhanced to take a number of options on the command line, allowing its use as an object on the desktop or as part of a program like the OS/2 Warp 3.0 Bonus Pak application WebExplorer which attempts to pass the filename of an MPEG movie on the command line. These are the recognized command line options:  -color Color playback, default.  -gray Grayscale playback.  -noloop One play playback, default.  -loop Looping playback.  -dive Use DIVE -enabled playback, default.  -nodive Use conventional GpiBitBlt playback.  -status Show the status bar , default.  -nostatus Do not show the status bar  -encmsg Indicate in the status bar when an encoding error is detected in the MPEG file.  -noencmsg Ignore any encoding errors in the MPEG file, default.  -toolbar Show the menu/toolbar , default.  -notoolbar Do not show the menu/toolbar  -aspect Maintain the aspect ratio during a resize of the movie window, default.  -noaspect Do not maintain the aspect ratio during a resize of the movie window.  -half Resize the window to half the normal movie size.  -normal Resize the window to the normal movie size, default.  -double Resize the window to double the normal movie size.  -slow Play the movie at the slow setting.  -medium Play the movie at the medium setting.  -fast Play the movie at the fast setting.  -unlimited Play the movie at the unlimited setting, default.  filename(s) Filename(s) of movies to load and play. If one or more filenames are given on the command line, either by explicitly listing multiple filenames or using a wildcard pattern with * or ?, they will be loaded and play started automatically. Note that the following options are mutually exclusive. You're only allowed to choose one from each of the following groups:  -color and -gray  -noloop and -loop  -dive and -nodive  -status and -nostatus  -encmsg and -noencmsg  -toolbar and -notoolbar  -aspect and -noaspect  -half, -normal and -double  -slow, -medium -fast and -unlimited If more than one of any of these pairs is listed on the command line, the one closest to the end of the command line will take precedence. If any of these options are specified, they will take precedence over the information saved from the last time. Therefore, if you want to be sure that you get a particular option, it's better to explicitly mention it on the command line. ═══ 7.1. -color option ═══ The -color option causes PMMPEG to start up in color mode. ═══ 7.2. -gray option ═══ The -gray option causes PMMPEG to start up in shades of gray mode. ═══ 7.3. -noloop option ═══ The -noloop option causes PMMPEG to start up in play-once-and-stop mode. ═══ 7.4. -loop option ═══ The -loop option causes PMMPEG to start up in continuous loop mode. ═══ 7.5. -dive option ═══ The -dive option causes PMMPEG to display movies using DIVE support. ═══ 7.6. -nodive option ═══ The -nodive option causes PMMPEG to display movies using the conventional GpiBitBlt graphics output. ═══ 7.7. -status option ═══ The -status option causes PMMPEG to display the status bar during movie playback. ═══ 7.8. -nostatus option ═══ The -nostatus option causes PMMPEG to not display the status bar during movie playback. ═══ 7.9. -encmsg option ═══ The -encmsg option causes PMMPEG to display a notification of bad frames in the movie. ═══ 7.10. -noencmsg option ═══ The -noencmsg option causes PMMPEG to not display a notification of bad frames in the movie. ═══ 7.11. -toolbar option ═══ The -toolbar option causes PMMPEG to display the menu bar and toolbars in the movie frame. ═══ 7.12. -notoolbar option ═══ The -notoolbar option causes PMMPEG to not display the menu bar and toolbars in the movie frame. ═══ 7.13. -aspect option ═══ The -aspect option causes PMMPEG to maintain the aspect ratio during movie window resize. ═══ 7.14. -noaspect option ═══ The -noaspect option causes PMMPEG to not maintain the aspect ratio during movie window resize. ═══ 7.15. -half option ═══ The -half option causes PMMPEG to play the movie back at half size. ═══ 7.16. -normal option ═══ The -normal option causes PMMPEG to play the movie back at normal size. ═══ 7.17. -double option ═══ The -double option causes PMMPEG to play the movie back at double size. ═══ 7.18. -slow option ═══ The -slow option causes PMMPEG to play the movie back at slow speed. ═══ 7.19. -medium option ═══ The -medium option causes PMMPEG to play the movie back at medium speed. ═══ 7.20. -fast option ═══ The -fast option causes PMMPEG to play the movie back at fast speed. ═══ 7.21. -unlimited option ═══ The -unlimited option causes PMMPEG to play the movie back at unlimited speed. ═══ 7.22. filename option ═══ The filename option causes PMMPEG to load and start playing that MPEG movie automatically. ═══ 8. Installation ═══ PMMPEG can simply be run in any of the following manners:  On the command line, type pmmpeg with any desired options or MPEG filenames.  Double-click on the PMMPEG object on your desktop.  Double-click on any .MPG files in any folder. The second and third options are enabled for you if you run the INSTALL.CMD REXX program supplied with PMMPEG. ═══ 8.1. INSTALL.CMD ═══ INSTALL.CMD is a REXX program that will create a PMMPEG desktop object for you and set up an association. for any files that end in .MPG. For this to work properly under OS/2 Warp 3.0, you must first remove the default installation association with the following procedure:  Open the Drives folder and go to the mmos2 directory of your OS/2 partition.  Open the settings panel of MMPM.EXE and go to the Associations page.  Find *.MPG in the list of file extensions at the bottom of the page  Click on *.MPG, then click on Remove. If anyone would like to write the REXX code to do this automatically, please email it to me and I'll include it in the next release of PMMPEG and make you famous by putting your name here! Now make sure PMMPEG.EXE and INSTALL.CMD are located in the directory where you are going to keep PMMPEG.EXE. Then type INSTALL at the command line. It will create a desktop object and make the association with all .MPG files on your system. If you choose to make your own icon for PMMPEG, click here ═══ 8.2. PMMPEG Desktop Object ═══ To get this feature, follow the INSTALL.CMD procedure. This will make a PMMPEG object on your desktop that looks like this: If you double-click on this object, it will launch PMMPEG. You can add any of the command line options you like to the Parameters: field of the Program page of its Settings notebook. ═══ 8.3. .MPG Movie Association ═══ OS/2's Workplace Shell has a feature that allows programs to be automatically launched when a data file using that executable is double-clicked on. This helps us because it allows all MPEG files to be played by PMMPEG just by double-clicking on their icons. OS/2 Warp 3.0 has a peculiar feature that associates all *.MPG file with a Bonus Pak application that won't work properly if you don't have a ReelMagic MPEG hardware card installed! To have PMMPEG properly associated with all *.MPG files, follow the INSTALL.CMD procedure. Now all MPEG files ending in .MPG on your system should have their icon set to the PMMPEG icon: When you double-click on an MPEG movie, it will launch PMMPEG and automatically start playing the selected movie. ═══ 9. Drag and Drop MPEG Movies ═══ PMMPEG has been designed to allow dragging one or more MPEG movies from a folder on the desktop to the PMMPEG window. If you attempt to drop a non-MPEG movie (i.e. not ending in .MPG) the drop will be rejected. If there is no movie currently playing, then when you drop an MPEG movie it will be automatically loaded and start playing. If there is a movie currently playing, then that movie will stop and the new movie will be automatically loaded and start playing. If there is a movie currently playing, and you attempt to drop a non-MPEG movie then the movie will stop playing. You then have to click on the Play button to continue playing the current movie. ═══ 10. Menus ═══ The following sections describe the menus available in PMMPEG.  File Menu - Open... - Save... - Register...  Movie Menu - Half Size - Normal Size - Double Size - Unlimited - Fast - Medium - Slow  Options Menu - Show Menu/Toolbar - Show Status Bar - Note Decoding Errors - Maintain Aspect Ratio - Use DIVE - Colors - DIVE Details Dialog - Help ═══ 11. File ═══ Use File to open or save an MPEG movie and to register your use of PMMPEG. ═══ 11.1. Open ═══ Use Open to display a window that enables you to choose one or more MPEG movies. You can also drag and drop one or more movies from a folder onto the PMMPEG window. ═══ 11.2. Save ═══ Use Save to display a dialog box that enables you to save the MPEG file currently loaded. This is especially useful for WebExplorer users as WebExplorer generates a non-intuitive filename and writes the file to the directory pointed to by your TMP environment variable. This menu item will only be enabled when a movie is loaded. ═══ 11.3. Register ═══ Use Register to display a dialog box that enables you to register your payment of the shareware fee for PMMPEG. When I send you the registration key after you send me the fee, enter your name, organization and the EXACT registration key, then click OK. The key is checked and if acceptable, the pop-up warning displayed each time PMMPEG is launched will stop. When you then select the Product Information item from the Help menu, your name and organization will be displayed. Please see the Registration section to see how to register your copy of PMMPEG. ═══ 12. Movie ═══ Use Movie to set the size and to limit the playback speed of the movie. ═══ 12.1. Half Size ═══ Use Half Size to shrink down the size of the playback window to half the size encoded in the movie file. This can speed up playback a little due to the fact that fewer pixels have to be changed on the screen. Note that Presentation Manager has some rules about minimum frame window size, so you may not be able to get true half size playback for movies that are encoded with a small size. ═══ 12.2. Normal Size ═══ Use Normal Size to set the size of the playback window to exactly the size encoded in the movie file. ═══ 12.3. Double Size ═══ Use Double Size to set the size of the playback window to exactly double the size encoded in the movie file. This slows down playback a bit because 4X the number of pixels have to be changed on the screen. DIVE mode helps a lot here because it's been tuned to scale the playback size better than the conventional GpiBitBlt method. ═══ 12.4. Unlimited ═══ Set movie playback speed to go as fast as it possibly can. The playback speed is directly related to the speed of the processor in your machine, how much cache you have, how fast your hard disk and controller are, how fast your graphics card is and how it's connected to your system. PMMPEG does not have any exact frame rate settings due to the lack of a high-speed timer and the complexity of MPEG decoding. ═══ 12.5. Fast ═══ Set movie playback speed to play at a maximum of approximately 30 frames per second on machines that can play that fast. There are a number of factors that can affect the actual playback speed so this is just a guideline. This is useful for fast computers that play movies far too fast. PMMPEG does not have any exact frame rate settings due to the lack of a high-speed timer and the complexity of MPEG decoding. ═══ 12.6. Medium ═══ Set movie playback speed to play at a maximum of approximately 15 frames per second on machines that can play that fast. There are a number of factors that can affect the actual playback speed so this is just a guideline. This is useful for fast computers that play movies far too fast. PMMPEG does not have any exact frame rate settings due to the lack of a high-speed timer and the complexity of MPEG decoding. ═══ 12.7. Slow ═══ Set movie playback speed to play at a maximum of approximately 5 frames per second on machines that can play that fast. There are a number of factors that can affect the actual playback speed so this is just a guideline. This is useful for fast computers that play movies far too fast or when you want a "slow motion" playback. PMMPEG does not have any exact frame rate settings due to the lack of a high-speed timer and the complexity of MPEG decoding. ═══ 13. Options ═══ Use Options to toggle menus, status bars and turn the DIVE support on and off. ═══ 14. WebExplorer ═══ WebExplorer is an application that ships with OS/2 Warp that allows users to browse WorldWideWeb sites all over the world with a few easy clicks. WebExplorer can be configured to launch various programs when it encounters various types of data on these Web sites. One of these types of data is MPEG files, generally found with the .MPG extension. To configure WebExplorer to automatically launch PMMPEG whenever you select an MPEG file, do the following:  Start WebExplorer by double-clicking on its icon in the IBM Internet Connection for OS/2 folder.  Click on the Configure menu item  Click on the Viewers... menu item.  Click on the button in the ComboBox and scroll down the list until you find MPEG video format.  Enter the full path to PMMPEG.EXE in the Program field. You must specify the driver letter and complete path, i.e. E:\TCPIP\BIN\PMMPEG.EXE  Click on the OK button Now start up your connection to the Internet and browse one of the well-known MPEG sites. When you click on an .MPG filename, it should load the file, launch PMMPEG and automatically start playing the movie. ═══ 14.1. Show Menu/Toolbar ═══ Toggle the display/no display of the menu bar and the toolbar. This is useful to set up a very plain playback frame by removing the menu bar and the toolbar. You can still control the player using the pop-up menu using Mouse Button 2. ═══ 14.2. Status ═══ Use Status to enable the Status bar at the bottom of the frame window. This will display the size in pixels, the frame type of the movie, and the running frames/second value. Click on the Status menu item again to remove the Status bar. The window will resize itself to accommodate the size of the status bar. The status bar will display an 'I' for MPEG movies with I-frames only: and 'IBP' for MPEG movies with IBP-frames: The status bar can optionally display an indication of frames with some kind of decoding problem ═══ 14.3. Note Decoding Errors ═══ Use Note Decoding Errors to enable the Status bar at the bottom of the frame window to show which frames of the movie have some kind of decoding problem Each frame that has a decoding error will cause the Status bar to have a red background, which changes back to a gray background on the next correct frame. Click on the Note Decoding Errors menu item again to remove this feature. ═══ 14.4. Maintain Aspect Ratio ═══ Use Maintain Aspect Ratio to make sure the playback window sets itself to be in the proper ratio to the original movie when you resize the window by dragging one of the window edges larger or smaller. This makes movies "look right" by preventing playback from being too tall or too wide. Click on the Maintain Aspect Ratio menu item again to gain complete control over the playback window. ═══ 14.5. Use DIVE - Colors ═══ Use Use DIVE - Colors to enable the high speed DIVE graphics system. This menu item will only be available if the DIVE subsystem is enabled on your system. If enabled, the will be replaced with the number of colors your desktop is currently set to. This will generally be 256, 64K or 16M for 256 colors, 65,536 colors or 16.7 million colors. Depending on the graphics adapter, amount of video RAM and graphics driver you have, you can change the number of colors on your desktop using Page 1 of the System notebook in the System Setup folder. Increasing the number of colors will generally give you a better image, but will slow down the playback speed due to the increase in the amount of data to be changed in your video RAM. Click on the Use DIVE - Colors item again to go back to the conventional GpiBitBlit display method. ═══ 14.6. DIVE Details Dialog ═══ Use DIVE Details to query the DIVE graphics system. capabilites of your system. This menu item will only be available if the DIVE subsystem is enabled on your system. If enabled, a dialog box will pop up with all of the gory details about how DIVE is running on your system. Here are some of the more interesting details:  Direct screen access. This will always be YES.  Screen access requires bank switch. If NO, DIVE can write directly to anywhere in your video RAM. If YES, it must access your video RAM in a segmented manner, slowing performance.  Screen color depth. This is the number of bits of color for each pixel. 8 = 256 colors, 16 = 64K colors, 24 = 16.7 million colors.  Screen aperture size. This is the amount of video RAM accessible at any one time.  Number of input formats. This is the number of different color spaces that DIVE can directly handle.  Number of output formats. This is the number of different color spaces that DIVE can directly handle. ═══ 15. Open ═══ Use Open to select one or more MPEG movies: 1. Select the down arrow to the right of the Drive list to display all the drives on your system. 2. Select a drive from the Drive list. 3. Select a directory from the Directory list. 4. Select one or more file names from the File list or type in a filename. 5. Select the Open pushbutton to play the movies you want to view. For a detailed explanation of each field, select from the list below:  Open file name  Type of file  Drive  File  Directory  Open  Cancel ═══ 16. Keys PMMPEG ═══ There is no key specific PMMPEG help. ═══ 17. Open Filename ═══ Type the name of the movie you want to open in the Open filename field. If you include a wildcard character such as * or ?, the file list will be restricted to those filenames that match the pattern. Click on one or more filenames in the list and select the Open pushbutton. ═══ 18. Type of File ═══ Select the down arrow to the right of the Type of file field to display the available file types. ═══ 19. Drive ═══ The Drive list displays the drives on your system. Select the drive that contains the files you want to view. ═══ 20. File ═══ The File list displays all the files that match the current pattern in the Open Filename field. Select one or more files you want to open by clicking with the mouse. Clicking on a selected filename will remove it from the list of selected files. ═══ 21. Directory ═══ The Directory list displays the directories on the selected drive. Select a directory to display the list of files from that directory in the File list box. ═══ 22. OK ═══ Select OK to accept all information in the window, remove the window from the screen and view the movie. ═══ 23. Cancel ═══ Select Cancel to remove the window from the screen without viewing a movie. ═══ 24. PMMPEG ═══ Use PMMPEG to display digital movies conforming to the MPEG-1 specification. PMMPEG can handle both I-Frame only movies and IBP-Frame movies. It cannot currently handle MPEG movies with embedded sounds, MPEG 1 Stream files or MPEG-2 files. Related Information:  Command Line Options  Installation  Desktop Object  MPEG File Association  Toolbar  Menus  Status Bar  Slideshow  Saving Individual Frames  Drag/Drop  256 Colors  Summary of New Features  Suggestions for Future Releases  MPEG File Info  MPEG-2 Info  DIVE  WebExplorer  Origin of the Code  Movie Sites  Known Bugs  Credits  Author Contact  Registration ═══ 25. Help ═══ Use Help to display the Help submenu with the following menu items:  Help Index  General Help  Using Help  Product Information ═══ 26. Help Index ═══ Use Help Index to display the index of all items in the on-line help system. ═══ 27. General Help ═══ Use General Help to display the high-level help items in the on-line help system. ═══ 28. Using Help ═══ Use Using Help to display the help items on how to use the on-line help system built into OS/2. ═══ 29. Product Information ═══ Use Product Information to display the "About Box" for PMMPEG. If you haven't registered your copy of PMMPEG, you will be gently reminded to send in your registration and how many days left you have in your 30 day evaluation period. If you have more than 15 days left, the text will be displayed normally. If you have less than 15 days left the text will be displayed in yellow. If you go over your evaluation period, the text will turn to red, but the application will continue to work, with no loss of function. If you have registered, your name and organization will be displayed in the text, thanking you for your registration. ═══ 30. MPEG File Info ═══ This program implements the standard described in the Committee Draft ISO/IEC CD 11172 dated December 6, 1991 which is sometimes refered to as "Paris Format." The player expects MPEG-1 video streams only. It can not handle multiplexed MPEG streams or video+audio streams. The player uses the paris entropy coding table set (which we believe to be the MPEG-1 standard), but can not handle any bitstreams that use the "berlin" entropy coding table set. Berlin data is relatively rare so there shouldn't be too much to worry about here, but be aware of the difference when looking for streams to play. XING is a popular DOS/Windows-based MPEG encoder/player that does not take advantage of P or B frames (ie, frames with motion compensation). Performance of the player on XING data is significantly slower (half or less) than the performance when motion compensated MPEG data is decoded. ═══ 31. MPEG-2 Info ═══ There is a new version of MPEG on the block, MPEG-2, otherwise known as ISO/IEC DIS 13818-2. I have experimented with the sample MPEG-2 decoder and found that the visual quality is lacking on MPEG-1 movies that work well with the Berkeley decoding engine. Moving up to an MPEG-2 decoding engine will allow more movies to be played, but at the expense of a clear image on the movies we all know and love. As most movies are still MPEG-1 at this time, I have decided to stick with the Berkeley engine and revisit the MPEG-2 engine at a future date. Here is some information on MPEG-2 from the README file of the MPEG-2 source code package for an encoder and decoder from the MPEG Software Simulation Group. The code can be obtained from ftp.netcom.com in the /pub/cfogg/mpeg2 directory. They maintain a listserver for their code. Email to listserv@netcom.com with message text: subscribe mpeg-users [your E-mail address] MPEG-2 Video is a generic method for compressed representation of video sequences using a common coding syntax defined in the document ISO/IEC 13818 Part 2 (CD: Nov. 1993, DIS: March 1994) by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC), in collaboration with the International Telecommunications Union (ITU) as Recommendation H.262. The MPEG-2 concept is similar to MPEG-1, but includes extensions to cover a wider range of applications. The primary application targeted during the MPEG-2 definition process was the all-digital transmission of broadcast TV quality video at coded bitrates between 4 and 9 Mbit/sec. However, the MPEG-2 syntax has been found to be efficient for other applications such as those at higher bit rates and sample rates (e.g. HDTV). The most significant enhancement over MPEG-1 is the addition of syntax for efficient coding of interlaced video (e.g. 16x8 block size motion compensation, Dual Prime, et al). Several other more subtle enhancements (e.g. 10-bit DCT DC precision, non-linear quantization, VLC tables, improved mismatch control) are included which have a noticeable improvement on coding efficiency, even for progressive video. Other key features of MPEG-2 are the scalable extensions which permit the division of a continuous video signal into two or more coded bit streams representing the video at different resolutions, picture quality (i.e. SNR), or picture rates. ═══ 32. DIVE ═══ All display drivers in the OS/2 Warp 3.0 box and a growing number of 3rd party graphics card drivers (running with at least 256 colors) allow for a technique called DIVE, or Direct Interface Video Extensions. It's easy for a 3rd party driver writer to include DIVE support because the support code is in the reference video driver shipped in the Device Driver Kit shipped by IBM. DIVE consists of a set of APIs that allows application developers to get higher-speed graphics output than the conventional GpiBitBlt approach and also provides color conversion facilities. DIVE has evolved over time.  In OS/2 2.0, it was a private interface used by the Ultimotion movie display application.  In OS/2 2.1, a single IOCtl interface was documented to provide raw video RAM access from a conventional Ring 3 OS/2 Presentation Manager application. There were some problems implementing this interface in PMMPEG 2.1. I chose to not implement DIVE at that time: - DIVE forces you to write the color index of the palette currently loaded in the hardware. I got this working for grayscale but in color mode the colors were way off and I couldn't figure out why. I believe the Berkeley engine is having a hard time dithering to the table of color indexes I set up, but since this doesn't work it's a major reason not to include it. - DIVE does not handle expansion of an image so I would have to double the image by hand in my code, or lose that feature. - Due to the length of time it takes to decode and dither each frame in the movie as compared to the short amount of time it takes to actually get PM to display the frame, I was only seeing 0.5 to 1 frame per second improvement. I need to make serious increases in decoding and dithering performance before DIVE will make a serious difference in the overall frame rate. - DIVE completely writes over whatever is on the screen at that place. This is a problem when you try to pull down the Options menu - DIVE overwrites the menu with the frames as they're decoded and you can't tell what you're selecting from the menu. - You have to have a graphics device driver that has been written to tolerate DIVE and you have to have the SMVDD.SYS driver from MMPM/2 in your CONFIG.SYS for DIVE from an application to work. Most newer drivers will work, but some may not.  OS/2 Warp 3.0 has documented a set of powerful APIs that provide high-speed graphics display (including image stretch and compress), clipping rectangle handling and color space conversion, built into every video driver that ships with OS/2 Warp 3.0 and running with at least 256 colors. If the desktop is currently set to 16 colors, DIVE will not be enabled because 16 colors is insufficient to generate decent images. Color space conversion means that DIVE will take care of converting images using non-RGB color descriptions. This is especially useful for PMMPEG because the MPEG files contain the color data in YUV422 color space and DIVE knows how to convert these colors at high speed to the RGB values required by most graphics cards. There is an overview of DIVE in the Multimedia Application Programming Guide and the APIs are documented in the Multimedia Programming Reference. These books come on-line in the OS/2 Warp 3.0 toolkit. It is currently (April 1995) available only via the Developer Connection CD-ROM subscription service. I expect it will be bundled with various compilers as compiler vendors ship new versions. To use DIVE in your application you only need to #include and in your application and call the Dive* APIs you require. DIVE.DLL will be dynamically loaded by OS/2 when your application runs. The high-level APIs available in DIVE are: - DiveOpen - Opens a DIVE instance for your application - DiveClose - Closes the DIVE instance - DiveQueryCaps - Query DIVE capabilities for current system - DiveAllocImageBuffer - Allocate buffer, perhaps right in Video RAM - DiveFreeImageBuffer - Free the buffer - DiveSetupBlitter - Describe image color space, areas to paint on Blit - DiveBeginImageBufferAccess - Gain addressability to the buffer - DiveEndImageBufferAccess - Release addressability to the buffer - DiveBlitImage - Convert color space and put image on the screen - DiveSetDestinationPalette - tell DIVE when hardware palette changes The low-level features available in DIVE are: - DiveCalcFrameBufferAddress - get Ring 3 address in video RAM - DiveAcquireFrameBuffer - get access to raw video RAM - DiveDeacquireFrameBuffer - release access to raw video RAM - DiveSwitchBank - required for multiple aperture video subsystem There is another component, called enDIVE, that works at the graphics driver layer. It allows a programmer developing a graphics driver for a card with special hardware support to be able to take advantage of all of the features the hardware can offer in a standard way. Chips are coming on the market that can do color space conversions, stretching and compressing images, etc. This is clearly going to be faster than doing it in software, giving any DIVE-enabled application a large, transparent speed increase. If your graphics card has such support, please email to me so I can see the performance that new hardware and enDIVE provides. I'm told that the ThinkPad 755 has a chip (ASKEY?) that performs some of this, as does an upcoming Weitek chip. If you're curious about DIVE, I'm going to be giving a session on DIVE in general and specifically my experience implementing it in PMMPEG at the Fourth Annual ColoradOS/2 developer's conference. It will be held October 16 - 20, 1995 at the Keystone Resort in Vail, Colorado. For a brochure and reservation information, please call Wayne Kovsky at (719)481-3389. ═══ 33. Origin of the Code ═══  Computer Science Division-EECS, Univ. of Calif. at Berkeley. Lawrence A. Rowe, Ketan Patel, and Brian Smith wrote a Unix and X Windows-based MPEG decoder and viewer. This program is based on their version 2.0 release. To get the original source, ftp to toe.cs.berkeley.edu, directory /pub/multimedia/mpeg/mpeg-2.0.tar.Z. These folks have set up several mailing lists for their code. - mpeg-list-dist@CS.Berkeley.EDU General information on the decoder for everyone interested should be sent to this list. This should become active after 11/20/92 - mpeg-list-request@CS.Berkeley.EDU Requests to join or leave the list should be sent to this address. The subject line should contain the single word ADD or DELETE. - mpeg-bugs@CS.Berkeley.EDU Problems, questions, or patches should be sent to this address.  Tom Lane of the Independent JPEG Group provided the basic inverse DCT code used by the Berkeley player. (tom_lane@g.gp.cs.cmu.edu)  John Webb contributed the frame subclass code for the status bar and provided invaluable help when things wouldn't work right.  I, Mike Brown, ported the Unix/X code to OS/2 and Presenation Manager and "integerized" the heavy floating point in the inverse DCT routine. Click to see the Berkley Disclaimer ═══ 34. Berkeley Disclaimer ═══ /* * Copyright (c) 1992 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ ═══ 35. Movie Sites ═══ You can get MPEG movies from computers around the world. The well-known ones I have found are:  ftp Sites - emx.cc.utexas.edu /pub/mnt/mpeg - s2k-ftp.cs.berkeley.edu /pub/multimedia/mpeg/movies - havefun.stanford.edu /pub/mpeg - phoenix.oulu.fi /pub/mpeg - calypso-2.oit.unc.edu /pub/multimedia/animation/mpeg - seds.lpl.arizona.edu /pub/anim - venice.tcp.com /pub/anime-manga/anim/mpeg - ftp.hawaii.edu - ftp.univ-rennes1.fr /pub/Images/Astro - ftp.netcom.com /pub/jrp/film.html  World Wide Web Pages: - www.univ-rennes1.fr/Astro/anime-e.html - mambo.ucsc.edu/psl/thant/thant.html - akebono.stanford.edu/yahoo/Computers/Multimedia/Movies - match.com/~tlod  Internet Newsgroups - alt.binaries.multimedia ═══ 36. Known Bugs ═══ These bugs are known and are on the list of things to fix in the next release.  DIVE black frame handling broken  DIVE resized or uncovered no image displayed  Crashes loading certain movies  Frames flip back and forth quickly  Diagonal stripes playback  Crashes playing certain movies  Color Table  Bad Encodings  Playback Speed  OS/2 for SMP  Icon Problem  Many PMMPEG.INI files, options not saved ═══ 36.1. Color Table Problem ═══ When switching from color to gray or gray to color while an I-Frame-only movie is playing, you will see a 1 frame distortion of colors. This is a restriction on the way the color table is handled and the proper display of the image will pick up after the color table change completely makes its way through the application. On IBP-Frame movies, it can take a few frames for the image to correct itself, generally until an I frame is encountered. ═══ 36.2. DIVE black frame handling broken ═══ The first few initial black frames of MPEG files are not correctly detected and ignored in DIVE mode. Just ignore them... ═══ 36.3. DIVE resized or uncovered no image displayed ═══ When the window is resized or part of the window is uncovered while in DIVE mode and the movie is stopped, the image is not displayed. This is because the image is generated, handed to the DIVE system and tossed away, so there's nothing to hand to DIVE again. ═══ 36.4. Crashes loading certain movies ═══ PMMPEG will crash loading certain movies, such as one featuring a jet. ═══ 36.5. Frames flip back and forth quickly ═══ PMMPEG will play certain movies normally and then get stuck on two frames, flipping back and forth between them quickly. pamander.mpg, christie.mpg and ss-94.mpg exhibit this behavior. ═══ 36.6. Diagonal stripes playback ═══ PMMPEG will play certain movies badly, showing only diagonal stripes of color. These movies always have sizes that aren't exact multiples of 16 pixels. This points to a bug in the underlying Berkeley decoder engine. Thanks to Murray Penny for the Web site http://rs560.cl.msu.edu/weather for examples of bad playback. ═══ 36.7. Crashes playing certain movies ═══ PMMPEG will crash playing certain movies, such as disposal.mpg ═══ 36.8. Bad Encodings ═══ Some movies have encoding problems. PMMPEG tries to handle these as best as possible (for example skipping corrupted frames) and continue playing the movie. There are a few distinct cases that will cause the following behaviours in PMMPEG:  PMMPEG may crash either at the initial load of the movie or at some point during playback.  Two movies I have found will get to a certain point in the movie and then rapidly flip back and forth between two adjacent frames and never terminate.  Two movies I have found seem to have a problem with the "vertical hold" as the display looks like a series of jagged diagonal lines. I will work to bulletproof the code, but it also depends on the Berkeley folks to release bug fixes to their engine that will help all platforms. ═══ 36.9. Playback Speed ═══ Movie playback is not real-time, except on high-performance systems. Faster CPU and video cards will help to improve the situation and internal optimization is ongoing. Use grayscale to get the fastest playback, at the expense of losing color. ═══ 36.10. OS/2 for SMP ═══ PMMPEG seems to work well on a beta level of OS/2 for SMP, the version of OS/2 that can run on certain machines that have multiple 486 or Pentium processors. I've seen it randomly crash with a Divide by Zero error. I don't know if it's a bug in the OS/2 product since it was at beta level or in my code. When I get the chance to debug it on a GA level of OS/2 for SMP, I'll try to track this down. ═══ 36.11. Icon Problem ═══ Users of certain ATI graphics cards report that the PMMPEG icon is not being displayed properly, instead a generic OS/2 icon is shown. Since this works properly on other systems including XGA and S3, I suspect it's an ATI driver problem. ═══ 36.12. Many PMMPEG.INI files, options not saved ═══ If you make your own icon for PMMPEG instead of using INSTALL.CMD , make SURE you specify the full path to the PMMPEG.EXE in the Settings page. If you don't, the Workplace Shell won't pass the path of the executable file to PMMPEG as it's running and you'll end up with PMMPEG.INI files scattered over your hard disk and none of your saved settings will work correctly. ═══ 37. Author Contact ═══ Author name: Mike Brown You can reach me in one of the following manners:  mbrown@sescomp.com (or use the syntax required by your system to send Internet email).  SES Computing, Inc. 13206 Jenner Lane Austin, TX 78729-7456 I look forward to reports of new movie sites, new feature requests and of course bug reports. Note: I plan to move my family to Melbourne, Australia in December, 1995 for two years. This complicates registering your copy of PMMPEG at that time, because my email address may not remain the same and I'd probably prefer Aussie Dollars by then! I'll work on making it easy for you to register after this time, but if you have trouble contacting me, please keep trying. Also, if you've got a job for me doing OS/2 development, PLEASE contact me as I'd like to get something lined up in lots of time before we head over. ═══ 38. Registration ═══ Release 1.0 of PMMPEG was distributed as Freeware because it didn't have all of the features that I eventually wanted to include, and I also wanted to gauge the market for such a program. I have decided to distribute Release 3.0 of PMMPEG as Shareware to recoup some of the development, postage and network costs associated with distributing it. The suggested price is $15.00, a bargain at twice the price! If after 30 days of use you decide that PMMPEG is a useful tool, please print out the Registration Form and mail it and the registration fee to the address shown on the form. I have specifically not disabled any features, but trust you to "do the right thing" to support development of cheap but useful software in the growing OS/2 environment. I'm pleased with the registration rate from PMMPEG 2.1, but I still think there are a lot of folks out there that have forgotten to register, so I decided to add the Registration feature. As a registered user, you are entitled to a free upgrade to the next release of PMMPEG. You can receive your upgrade in one of the following manners:  Through the post office on a 5м" or 3л" floppy disk.  Through email as a series of UUENCODED email messages.  By ftp from ftp.cdrom.com. Be sure to completely fill out the form so I can keep you up to date. ═══ 38.1. Registration Form for PMMPEG Release 3.0 ═══ To print this registration form, click on the Print... button below, make sure 'This Section' is selected and then click on Print. Send $15 (plus applicable sales tax if you live in Texas) in a check or money order in U.S. funds drawn on a U.S. bank - sorry my bank is VERY cranky!) with this completed form to SES Computing, Inc. 13206 Jenner Lane Austin Texas 78729-7456 Name ______________________________________________ Address ______________________________________________ State/Province ______________________________________________ Country ______________________________________________ Zip/Postal Code ______________________________________________ Internet/Compuserve ______________________________________________ Where did you get PMMPEG? ________________________________________ How would you like to receive your free next release? (Circle one) 5м" Floppy 3л" Floppy UUENCODED Email FTP from ftp.cdrom.com If you circled UUENCODED Email or FTP, be sure to show an email address above to allow me to deliver the new version or notify you by email that a new version is available. Your signature below acknowledges the following: USERS OF PMMPEG MUST ACCEPT THIS DISCLAIMER OF WARRANTY PMMPEG is supplied 'as is'. The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of PMMPEG. In any case the maximum liability of the seller will be limited exclusively to product replacement or refund of the purchase price. Your signature ______________________________________________ Thank you for registering PMMPEG, Mike Brown. ═══ 39. Credits ═══ Thanks to the following people that used previous PMMPEG releases and sent in valuable suggestions, bug reports and beta test feedback.  Que Alexander  Keith Brafford  Charles Buck  R. Campbell  Troy Caperton  Les Chan  Michael Chan  John-Marc Chandonia  Dave Conway-Jones  Linden DeCarmol  Mike W. Dross  Rainer Falkner  Mark Fay  Roger Geer  Tom Giroux  Eric Goodall  Scott Harper  Steve Hancock  Chris Herborth  Wey J Ho  Dzung T. Hoang  Philip Hunter  Rich Iachetta  Scott INTREPID816  Ernst-Walter Joehnk  John Johnson  Scott Jost  Paul Kolenbrander  Fredrik Kvamme  Morris Kwok  Jim Leff  Alann Lopes  Kevin Lowey  Guy McArthur  Gianluca Magalotti  Markus Moenig  Makoto Nagata  John Navarro  Charlie O  Roman Olynyk  Chris Peck  Murray Penney  Mark Pietras  Graham Sanderson  Carl Sayres  Gabriele Sartori  Darren Schultz  James Shoemaker  Greg Spath  Brian Stark  Kevin Sole  Joey Sum  David Sutherland  Gil Tennant  Aldis Valkirs  John VanHoozer  Nicolas Wagrez  John Webb  Ender Wiggin  Elton Woo  Stefan Zollner ═══ 40. Saving Individual Frames ═══ This feature allows you to save the curently displayed frame to the Clipboard or as an OS/2 Bitmap file These toolbar buttons are disabled during playback. ═══ 41. 256 Colors ═══ The dithering code in PMMPEG (both in DIVE mode and non-DIVE mode) requires the hardware be configured to display at least 256 colors or truly awful images are produced. If less than 256 color capability is detected at startup, a message will be displayed to that effect and the program will exit. ═══ 42. Slideshow ═══ This feature allows you to select multiple files using:  The File Dialog You can select multiple files using the File Dialog and they will be played in the order they are shown in the list, not in the order that they were clicked on.  Drag/drop multiple files from somewhere on the desktop You can drag and drop multiple files from anywhere on the desktop. The files will be played in an indeterminate order as the container that you're dragging from will generate the list of files which will not necessarily correspond to the manner in which you selected the files.  Filenames on the command line. You can specify multiple filenames on the command line when you launch PMMPEG. PMMPEG will then play each movie, one after the other, and optionally loop back to the front of the list and play again if the Loop mode is set. If a serious decoding error occurs, the slideshow will halt. You must click on the Play button to continue playing. It's not reccommended that MPEG files with known encoding problems be selected in a slideshow as it will halt playback each time the decoding error occurs.